一本书带你理解JVM字节码,实现各种JVM 黑科技
脚本之家
你与百万开发者在一起
如果你从事Java开发,无论是做业务开发还是高性能中间件开发,Java字节码都是必须要掌握的技能。在Java领域,字节码的应用很普遍,动态生成、修改字节码已经在各大主流框架中落地。
《深入理解JVM字节码》从原理和应用深入剖析字节码,由浅入深地全方位引导读者探究字节码,揭示Java性能优化、软件破解、APM黑科技。
本书把JVM的底层原理,如字节码的执行过程、反射、热加载、javac 编译、OpenTracing 等都讲清楚了,循序渐进,精炼而又不失深度。包含大量高度提炼和总结的图表,非常易于阅读和理解。强烈建议正在学习 Java 语言的读者将本书作为深入理解 JVM 原理的必读书籍。
● 4大内容特色 ●
NO.1 作者实力出众
资深Java技术专家、上市公司高级技术经理、掘金平台优秀作者
NO.2 内容系统全面
系统讲解JVM字节码底层原理、使用方法、操作工具、常见使用
NO.3 格外注重实操
详细讲解JVM字节码在反编译、破解、逆向工程、APM等场景应用
NO.4 阅读体验至上
包含大量高度提炼和总结的图表,非常易于阅读和理解
● 12大核心内容●
NO.1 Class文件结构深入剖析
NO.2 JVM字节码指令和方法调用指令
NO.3 Lambda表达式、反射、synchronized实现原理
NO.4 javac编译原理
NO.5 Kotlin的字节码分析
NO.6 字节码操作工具:ASM和Javassist
NO.7 Java Instrumentation原理
NO.8 JSR 269插件化注解
NO.9 字节码在Fastjson、Dubbo等上的应用
NO.10 软件破解/防破解/逆向工程
NO.11 全链路分布式跟踪和APM
NO.12 Android字节码与APM
● 作者介绍●
张亚
资深后端工程师和Java工程师,CVTE(视源股份,股票代码:002841)高级技术经理,带领20多人的研发团队做教育相关的产品。
主要方向是 JVM 调优及故障诊断、TCP 源码剖析、高并发系统设计,致力于后端底层技术细节的研究。独立实现了公司级全链路APM 产品,在字节码、ASM、软件破解等方向有丰富的实战经验。
vim 狂热爱好者,热衷分享,是掘金平台的优秀作者,在掘金上撰写过两本关于JVM和TCP 底层原理的小册子。
● 专家推荐 ●
《大学》开篇就提到“格物致知”,本书正是秉承这样的思想,深入到虚拟机、字节码等背后深层次的结构和原理来剖析Java。当你深入掌握了这些原理之后,你的代码不管是在整体架构上,还是在开发和运行效率上,都会提升一个档次。
——刘荣(电脑圈圈) CVTE 技术专家
这本书对JVM底层知识的讲解非常深入,作者将自己在字节码领域积累多年的经验融汇成了本书,内容深入且全面,可以帮助你拓宽在 JVM 方向上的视野,掌握更多字节码的“黑科技”。
——钱文品(老钱) 前掌阅服务端技术专家
很高兴看到介绍字节码的专著问世,如果你从事 Java 开发,无论是做业务开发还是高性能中间件开发,Java 字节码都是必须要掌握的技能。这本书从原理到实战,由浅入深地引导读者探究字节码的方方面面,非常值得一读。
—— 周志明 远光软件研究院院长/《深入理解Java虚拟机》作者
本书把JVM的底层原理,如字节码的执行过程、反射、热加载、javac 编译、OpenTracing 等都讲清楚了,循序渐进,精炼而又不失深度。强烈建议正在学习 Java 语言的读者将本书作为深入理解 JVM 原理的必读书籍。
—— 赵成 蘑菇街技术总监
● 目录 ●
第1章 深入剖析 class 文件结构 1
1.1 初探 class 文件 1
1.2class 文件结构剖析 3
1.2.1 魔数 4
1.2.2 版本号 6
1.2.3 常量池 7
1.2.4Access flags 18
1.2.5this_class、super_name、interfaces 19
1.2.6 字段表 20
1.2.7 方法表 23
1.2.8 属性表 25
1.3 使用 javap 查看类文件 30
1.4 小结 32
第2章 字节码基础 33
2.1字节码概述 33
2.2 Java 虚拟机栈和栈帧 34
2.3 字节码指令 41
2.3.1 加载和存储指令 41
2.3.2 操作数栈指令 42
2.3.3 运算和类型转换指令 45
2.3.4 控制转移指令 46
2.3.5for语句的字节码原理 48
2.3.6switch-case底层实现原理 54
2.3.7String的switch-case实现的字节码原理 55
2.3.8i和i 的字节码原理 60
2.3.9try-catch-finally的字节码原理 63
2.3.10try-with-resources 的字节码原理 71
2.3.11 对象相关的字节码指令 74
2.4 小结 77
第3章 字节码进阶 78
3.1 方法调用指令 78
3.1.1invokestatic指令 79
3.1.2invokevirtual指令 79
3.1.3invokespecial指令 80
3.1.4invokeinterface指令 80
3.1.5invokedynamic指令 90
3.2Lambda 表达式的原理 95
3.3 泛型与字节码 100
3.4synchronized 的实现原理 102
3.5 反射的实现原理 106
3.5.1 反射方法源码分析 107
3.5.2 反射的inflation机制 109
3.6 小结 110
第4章 javac 编译原理简介 111
4.1javac 源码调试 112
4.2javac 的七个阶段 114
4.2.1parse阶段 115
4.2.2enter阶段 116
4.2.3process阶段 118
4.2.4attr阶段 118
4.2.5flow阶段 121
4.2.6desugar阶段 122
4.2.7generate阶段 126
4.3 小结 129
第5章 从字节码角度看 Kotlin语言 130
5.1Metadata 注解 130
5.2 顶层方法 132
5.3object 单例 133
5.4 扩展方法 134
5.5 接口默认方法 135
5.6 默认参数 137
5.7 高级 for 循环 140
5.8data class 142
5.9 多返回值 143
5.10 协程的实现原理 144
5.10.1CPS 介绍 145
5.10.2suspend 关键字 146
5.11 从字节码分析 Kotlin 编译器的bug 149
5.12 小结 153
第6章 ASM 和 Javassist 字节码操作工具 154
6.1ASM 介绍 154
6.1.1ASM Core API核心类 156
6.1.2ASM操作字节码示例 158
6.2Javassist 介绍 169
6.2.1Javassist核心API 169
6.2.2Javassist操作字节码示例 170
6.3 小结 174
第7章 Java Instrumentation 原理 175
7.1Java Instrumentation 简介 175
7.2Instrumentation 与 -javaagent启动参数 176
7.3JVM Attach API 介绍 180
7.3.1JVM Attach API基本使用 181
7.3.2JVM Attach API的底层原理 183
7.4 小结 190
第8章 JSR 269 插件化注解处理原理 191
8.1JSR 269 简介 191
8.2 抽象语法树操作 API 193
8.2.1Names介绍 193
8.2.2JCTree介绍 193
8.2.3TreeMaker介绍 198
8.2.4 自定义注解处理实战 202
8.3JSR 269 在常用框架上的应用 207
8.3.1 案例一:ButterKnife 207
8.3.2 案例二:Lombok 209
8.4 小结 212
第9章 字节码的应用 213
9.1cglib 动态代理原理分析 213
9.2字节码在 Fastjson 上的应用 218
9.3 字节码在 Dubbo 上的应用 221
9.4 字节码在 JaCoCo 代码覆盖率上的应用 222
9.5 字节码在 Mock 上的应用 225
9.6 小结 227
第10章 软件破解和防破解 228
10.1 反编译 228
10.2 软件破解 229
10.3 软件防破解 234
10.4 小结 250
第11章 全链路分布式跟踪与APM 251
11.1 全链路分布式跟踪介绍 251
11.2 见微知著之 APM 260
11.3 小结 273
第12章 Android字节码与 APM 274
12.1dex 文件结构 274
12.2Android字节码 288
12.3Gradle 插件编写 295
12.4Android字节码注入原理 297
12.5 小结 301
上下滑动查看
福
利
来
了
小编为我们喜爱阅读的书迷们免费送书。
留言送书活动规则
特别申明:
更多精彩
在公众号后台对话框输入以下关键词
查看更多优质内容!
女朋友 | 大数据 | 运维 | 书单 | 算法
大数据 | JavaScript | Python | 打卡
AI | 人工智能 | 5G | 区块链
机器学习 | 数学 | 留言送书
精选书单 点蓝字即可
♡ 比肩“犀牛书”的《JavaScript编程精解》(原书第3版)重磅来袭!
♡ “Flutter中文网”社区创始人倾力撰写的网红书《Flutter实战》正式出版
♡ Go语言之父:发明过航天望远镜,想用Go语言解放程序员!
更多好书请关注脚本之家官方书店